# 期末考试
import random, time

# 生成学生成绩
print("欢迎登录学生查询系统！")
random.seed(1)
students = "ABCDEFGHIJKLMNO"
dct = {}
for x in students:
    scores = random.randint(35, 100)  # 生成随机分数
    dct[x] = dct.get(x, 0) + scores  # 生成学生成绩字典
lst = sorted(dct.items(), key=lambda x: x[1], reverse=True)  # 降序输出成绩列表
print(lst)

# 计算平均分、最大值、最小值
lst2 = []  # 创建一个空列表
for key, value in dct.items():
    lst2.append(value)  # 把字典中的值提取出来加入到一个新的列表中
print(lst2)
sum(lst2)  # 求和
average = sum(lst2) / len(lst2)
print("平均分是:{:.2f}".format(average).center(150))
best = max(lst2)
print("最大值是:{:.2f}".format(best).center(150))
worst = min(lst2)
print("最小值是:{:.2f}".format(worst).center(150))

# 统计不及格人数
k = 0
for i in lst2:
    if i < 60:
        k = k + 1
print("不及格的人数有{}人".format(k))

# 个人成绩查询系统
start = 'y'
end = 'n'
start = input("是否开始查询个人成绩？（y表示同意，任意键退出）:")
while start == 'y':
    try:
        name = input("请输入学生姓名：")
        grade = dct[name]
        if name not in dct:
            print("请输入正确的姓名！")
            continue
        else:
            print("该生的成绩是:{}".format(grade))
        if grade < average:
            print("该学生属于下等水平")
            end = input("是否继续查询？（n表示继续，任意键退出）：")
        elif grade == average:
            print("该学生属于中等水平")
            end = input("是否继续查询？（n表示继续，任意键退出）：")
        else:
            print("该学生属于上等水平")
            end = input("是否继续查询？（n表示继续，任意键退出）：")
        if end != 'n':
            print("成功退出")
            break
    except NameError:
        print("请输入正确的姓名！")
    except KeyError:
        print("请输入正确的姓名！")
else:
    print("成功退出")
t = time.process_time()  # 返回处理器时间与系统时间的组合后果
print("查询的所用时间是：{:.3f}秒".format(t))  # 输出查询时间
